<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>事件处理</title>
  </head>
  <body>
    <!-- 准备好一个容器 -->
    <div id="test"></div>

    <!-- 引入react 核心库 -->
    <script
      type="text/javascript"
      src="../../react-js/react.development.js"
    ></script>
    <!-- 引入react-dom 用于支持react操作dom -->
    <script
      type="text/javascript"
      src="../../react-js/react-dom.development.js"
    ></script>
    <!-- 引入babel 用于jsx转为js -->
    <script type="text/javascript" src="../../react-js/babel.min.js"></script>

    <script type="text/babel">
      // 创建组件
      class RefDom extends React.Component {
        /*
            (1).通过onXxx属性指定事件处理函数(注意大小写)
                   a.React使用的是自定义(合成)事件, 而不是使用的原生DOM事件---为了更好的兼容性
                   b.React中的事件是通过事件委托方式处理的(委托给组件最外层的元素)---为了高效
            (2).通过event.target得到发生事件的DOM元素对象---不要过度使用ref
        */
        // 创建Ref容器
        myRef = React.createRef();
        myRef2 = React.createRef();
        // 展示左侧输入框数据
        showData = () => {
          alert(this.myRef.current.value);
        };
        // 展示右侧输入框数据
        showData2 = (event) => {
          alert(event.target.value);
        };
        render() {
          return (
            <div>
              <input
                ref={this.myRef}
                type='text'
                placeholder='点击按钮提示数据'
              />
              &nbsp;
              <button onClick={this.showData}>点击我提示左侧输入框内容</button>
              &nbsp;
              <input
                onBlur={this.showData2}
                type='text'
                placeholder='失去焦点提示数据'
              />
            </div>
          );
        }
      }
      // 渲染组件到页面
      ReactDOM.render(<RefDom />, document.getElementById('test'));
    </script>
  </body>
</html>
